//菜单编辑
yutel.mod.MenuEditWindow = Ext.extend(Ext.Window, {
	menuId :1,
	initDate : function(extEditForm){
			ajaxRequest('menuView.action', {
				id:this.menuId
			}, extEditForm, function(result) {
				var fieldArr = extEditForm.findByType('textfield');
				for (var i = 0; i < fieldArr.length; i++) {
					var targetName = fieldArr[i].getName();
					var names=targetName.split("\.");
					var targetValue = result.menu[names[1]];
					fieldArr[i].setValue(targetValue);
				}
				fieldArr = extEditForm.findByType('numberfield');
				for (var i = 0; i < fieldArr.length; i++) {
					var targetName = fieldArr[i].getName();
					var names=targetName.split("\.");
					var targetValue = result.menu[names[1]];
					fieldArr[i].setValue(targetValue);
				}
			});
	},
	initComponent : function() {
		var extEditForm = new Ext.FormPanel({
			frame : true,
			border : true,
			labelAlign : 'right',
			labelWidth : 100,
			url : 'menuSave.action',
			onSubmit : Ext.emptyFn,
			defaultType : 'textfield',
			buttonAlign : 'center',
			bodyStyle : 'padding: 20 25;',
			minButtonWidth : 60,
			items : [{
						fieldLabel : '菜单ID',
						xtype : 'numberfield',
						vtype : 'trimblank',
						inputType : 'hidden',
						maxLength : 10,
						name : 'menu.id'
					},{
						fieldLabel : '父菜单',
						xtype : 'numberfield',
						vtype : 'trimblank',
						inputType : 'hidden',
						maxLength : 10,
						name : 'menu.pid',
						value : this.menuId
					},{
						fieldLabel : '菜单名称',
						vtype : 'trimblank',
						maxLength : 25,
						allowBlank : false,
						name : 'menu.name'
					}, {
						fieldLabel : '菜单类型',
						vtype : 'trimblank',
						maxLength : 15,
						name : 'menu.type'
					}, {
						fieldLabel : '连接地址',
						vtype : 'trimblank',
						maxLength : 100,
						name : 'menu.url'
					},{
						fieldLabel : '备注',
						vtype : 'trimblank',
						maxLength : 15,
						name : 'menu.remark'
					},{
						fieldLabel : '排序',
						xtype : 'numberfield',
						vtype : 'trimblank',
						maxLength : 2,
						name : 'menu.sort'
					}],
			buttons : [{
				text : '保存',
				handler : function(btn) {
					var wind = this.ownerCt;
					if(extEditForm.getForm().isValid()) {
						extEditForm.getForm().submit({
							success : function (extEditForm,action) {
								Ext.Msg.alert('成功',action.result.msg);
								Ext.getCmp('menuPanel').items.itemAt(0).items.itemAt(0).root.reload();
								Ext.getCmp('menuPanel').items.itemAt(0).items.itemAt(1).getStore().reload();
								wind.ownerCt.hide();
							},
							failure : function (userEditForm,action) {
								Ext.Msg.alert('失败',action.result.msg);
							}
						});
					} else {
						Ext.Msg.alert('提示','请检查（红线框）输入项是否符合要求！');
					}
				}
			},{
				text : '取消',
				handler : function() {
					this.ownerCt.ownerCt.hide();
				}}]
		});

		Ext.apply(this, {
					frame : true,
					border : true,
					title : '面版维护',
					width : 350,
					height : 250,
					resizable : false,
					modal : true,
					closeAction : 'hide',
					layout : 'fit',
					items : [extEditForm]
				});

		yutel.mod.ExtEditWindow.superclass.initComponent.call(this);
	}
});
//菜单树
yutel.mod.MenuTree = Ext.extend(Ext.tree.TreePanel, {
	initComponent : function() {
		Ext.apply(this, {
					title : '菜单树',
					width : 250,
					minSize : 200,
					maxSize : 250,
					border : true,
					frame : true,
					rootVisible : true,
					autoScroll : true,
					autoHeight : false,// 自动高
					containerScroll : true,
					root : new Ext.tree.AsyncTreeNode({
						id : '1',
						text : "菜单树",
						qtip : '菜单树',
						expanded : true
					}),
					loader : new TonyTreeLoader({
						url : "menuTree.action",
						listeners : {
							"beforeload" : function(treeLoader, node) {
								treeLoader.baseParams.id = node.id;
							}
						}
					})
				});
		yutel.mod.MenuTree.superclass.initComponent.call(this);
		this.addListener('click', function(node) {
			var listp=Ext.getCmp('menuPanel').items.itemAt(0).items.itemAt(1);
			listp.getStore().baseParams={id:node.id};
			listp.getStore().load();
			listp.buttonEnable();
		});
		this.addListener('contextmenu',function(node,event){
			var extRightClick = new Ext.menu.Menu({
		        items : [{id:'refashMenu',
		            text : '刷新菜单',
		            iconCls : 'icon-ref',
		            handler:function (){	node.reload();}}]
		     });
			event.preventDefault(); //这行是必须的 
			extRightClick.showAt(event.getXY());//取得鼠标点击坐标，展示菜单
		});
	}
});
//菜单列表
yutel.mod.MenuList = Ext.extend(Ext.grid.GridPanel, {
			buttonEnable: function(){
				this.getTopToolbar().enable();	
			},
			buttonDisable: function(){
				this.getTopToolbar().disable();	
			},
			initComponent : function() {
				// 新建菜单
		var btn_new = new Ext.Button({
			text : '新建菜单',
			iconCls : 'icon-add',
			disabled  : true,
			handler:function (){
				var orgTreeP = Ext.getCmp('menuPanel').items.itemAt(0).items.itemAt(0);
				var selectNode = orgTreeP.selModel.selNode;
				if (selectNode == null) {
					Ext.Msg.alert("提示信息",'请选择所属的组织机构！');
					return;
				}
            	new yutel.mod.MenuEditWindow({menuId:selectNode.id}).show();
            }
		});
		// 菜单修改
		var btn_edit = new Ext.Button({
			text : '菜单修改',
			iconCls : 'icon-add',
			disabled  : true,
			handler:function (){
				var userListP = Ext.getCmp('menuPanel').items.itemAt(0).items.itemAt(1);
				var selCount = userListP.getSelectionModel().getCount();
				if (selCount == 0) {
					Ext.Msg.alert("提示信息",'请选择要修改的用户！');
					return;
				}
				var id = userListP.getSelectionModel().getSelected().get('id');
            	var menuWin=new yutel.mod.MenuEditWindow({menuId:id});
            	menuWin.show();
            	menuWin.initDate(menuWin.items.itemAt(0));
            }
		});
		// 删除菜单
		var btn_del = new Ext.Button({
			text : '删除菜单',
			iconCls : 'icon-del',
			disabled  : true,
			handler:function (){
				var userListP = Ext.getCmp('menuPanel').items.itemAt(0).items.itemAt(1);
				var selCount = userListP.getSelectionModel().getCount();
				if (selCount == 0) {
					Ext.Msg.alert("提示信息",'请选择要删除的菜单！');
					return;
				} else {
					var menuId = userListP.getSelectionModel().getSelected().get('id');
					Ext.Ajax.request({
						url : 'menuDrop.action',
						params : {
							id:menuId
						},
						success : function(response) {
							var result = Ext.decode(response.responseText);
							if(result.success) {
								userListP.getStore().reload();
								Ext.Msg.alert("成功",result.msg);
							} else {
								Ext.Msg.alert("失败",result.msg);
							}
						},
						failure : function(response) {
							Ext.Msg.alert("失败","删除菜单出错！");
						},
						scope : this
	            	});
				}
            }
		});
				// 零配件模板列模式定义
				var templateGridPanel = this;
				var cm = new Ext.grid.ColumnModel([new Ext.grid.CheckboxSelectionModel(),
						{
							header : '菜单ID',
							dataIndex : 'id',
							sortable : true,
							hidden : true
						}, {
							header : '父菜单',
							dataIndex : 'pid',
							sortable : true
						},{
							header : '菜单名称',
							dataIndex : 'name',
							sortable : true
						}, {
							header : '连接地址',
							dataIndex : 'url',
							sortable : true
						}, {
							header : '备注',
							dataIndex : 'remark',
							sortable : true
						},{
							header : '排序',
							dataIndex : 'sort',
							sortable : true
						}]);

				var ds = new Ext.data.Store({
							autoLoad : false,
							proxy : new Ext.data.HttpProxy({
										url : 'menuList.action'
									}),
							reader : new Ext.data.JsonReader({
										totalProperty : 'totalProperty',
										root : 'root'
									}, [{
												name : 'id',
												type : 'int'
										}, {
												name : 'pid',
												type : 'int'
										}, {
												name : 'name',
												type : 'string'
										}, {
												name : 'type',
												type : 'string'
										}, {
												name : 'url',
												type : 'string'
										}, {
												name : 'remark',
												type : 'string'
										},{
												name : 'sort',
												type : 'int'
										}])
						});
				Ext.apply(this, {
							title : '面版列表',
							border : true,
							frame : true,
							autoScroll : true,
							autoHeight : false,
							bodyStyle : 'width:100%',
							loadMask : {
								msg : '数据加载中...'
							},
							viewConfig : {
								forceFit : true
							},
							tbar :[btn_new,btn_edit,btn_del],
							cm : cm,
							ds : ds,
							sm : new Ext.grid.CheckboxSelectionModel({
										singleSelect : false
									}),
							enableColumnMove : false,
							clicksToEdit : 1
						});
				yutel.mod.MenuList.superclass.initComponent.call(this);
			}
});
//主面版
yutel.mod.MenuMainPanel = Ext.extend(Ext.Panel, {
	initComponent : function() {
		var menuTree = new yutel.mod.MenuTree({region : 'west'});
		var menuList = new yutel.mod.MenuList({region : 'center'});
		Ext.apply(this, {
					layout : 'border',
						items : [menuTree,menuList]
					});
		yutel.mod.MenuMainPanel.superclass.initComponent.call(this);
	}
});
Ext.reg('menuPanel', yutel.mod.MenuMainPanel);